package cn.gzjp.modules.logis.entity;

import cn.gzjp.common.utils.RelativeDateFormat;
import cn.gzjp.modules.sys.utils.DictUtils;
import cn.hutool.core.date.DateBetween;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baidu.aip.nlp.NlpLangId;
import org.hibernate.validator.constraints.Length;

import cn.gzjp.common.persistence.DataEntity;
import cn.gzjp.common.utils.excel.annotation.ExcelField;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 物流发货Entity
 * @author zengcp
 * @version 2018-03-22
 */
public class LogisDelivery extends DataEntity<LogisDelivery> {
	
	private static final long serialVersionUID = 1L;
	private String openid;		// 发货人openid
	private String consignerName;//发货人名称
	private String consignerMobile;//发货人手机号
	private String startProvince;		// 发货城市
	private String startCity;		// 发货城市
	private String startDistrict;// 区
	private String startAddress;		// 发货详细地址
	private String endProvince;		// 目的城市
	private String endCity;		// 目的城市
	private String endDistrict;// 区
	private String endAddress;		// 目的地
	private String distance;		// 距离(公里数)
	private String goodsName;		// 货物名称
	private String goodsWeight;		// 实际货物重量
	private String goodsVolume;		// 货物体积
	private String wholeCar;		// 是否整车
	private String loadTime;		// 装车时间
	private String loadTimeText;		//装车时间文字
	private String carrier;		// 运送人openid
	private String carrierName;//运送人昵称
	private String carrierMobile;//运送人手机号
	private String driverRealName;//司机真实姓名;
	private String receiver;//收货人openid
	private String receiverName; //收货人昵称
	private String receiverMobile; //收货人手机号

	private String statusText;//中文状态

    //订单状态
	private String status;
	//11已叫车,等待支付订金 12已付订金，正在调度司机 13司机接单,运输中,14已卸车,运输完成 15订单关闭,超时未付款 16调度失败,司机超时未接单,17订单取消,货运计划变更

	//货主状态
	private String receiverStatus;//21已设定详细收货地址 22已选择货运保险,23已付定金,对接运输问题,24已支付运费尾款

	//司机状态
	private String carrierStatus;//31司机到达装车地点 32已装车,开始申报保险,33已申报保险,司机出发 34司机到达目的地,准备卸车，35货主已验货,开始卸车 36运费待结算  37 运费已结算

    //保险状态
	private String insurStatus;//41已申报货运险 42货运险审核中 43货运险已受理 44货车出发、保单已生效  45 货主验收、准备卸车(保单失效) 46货主申请保险理赔 47保险理赔审核中  48保险公司给付保险金 49货运险理赔完成


	//支付
	private String wxOrderId;//微信流水id(订金)
	private String wxOrderId2;//微信流水id(尾款)
	private Date payDate1;//订金支付时间
	private Date payDate2;//尾款支付时间
	private String payOpenId1;//支付订金的openid
	private String payOpenId2;//支付尾款的openid

	private String payStatus;		// 支付状态 0未支付 1已支付订金 2已支付尾款
	private String auditStatus;//客服审核状态 0 未审核 1已审核(已发布)
	private Date auditTime;//客服审核通过时间
	private Date receiptTime;//司机接单时间
	private String consumeTime;//物流耗时
	private Date carrierFinishTime;//运输完成时间
	private String startLng;//开始经度
	private String startLat;//开始纬度

	private String endLng;//目的地经度
	private String endLat;//目的地纬度

	private String ysxy;//运输协议
	private int hwbx;//货物保险费(数字)
	private String hwbxText;////货物保险(文字描述)
	private String hwbxYhText;//货物保险优惠文字

	private String leaveMsg;//给司机留言

	private Date startDate;
	private Date endDate;

	//private int receiverStatus;//货主 0未认领  1已认领 2已确认

	private String carInfo;//车辆信息



	private BigDecimal driverUnitPrice;//司机运输单价
	private BigDecimal driverFreight; //司机端的运费总价(司机端运输单价乘以重量)
    private BigDecimal ownerUnitPrice;//货主运费单价
	private BigDecimal ownerFreight;//货主端的运费总价(货主运费单价乘以重量)


	private BigDecimal insuranceFee0;//保险费(优惠前)
	private BigDecimal insuranceFee;//保险费(优惠后)
	private int taxPoiint;//发票税点
    private BigDecimal tax;//税费
	private BigDecimal ticheng;//提成(能支配的钱)

	private BigDecimal freight;		// 总运费(包括货主看到的运费+提成+保险+发票税点)

	private BigDecimal deposit;//订金

	private BigDecimal retainage;//尾款(货主看到的 总费用freight-订金deposit)

	private BigDecimal reward;//  下单奖励金总数 提成的25%  (发货人获得奖励金80%,推荐人获得奖励金的20%)
	private BigDecimal commission;//合伙人佣金（提成的60%）
	private BigDecimal driverReward;//司机奖励金 固定10元

	private BigDecimal estimateProfit;  //订单未完成前是预估最低利润

	private BigDecimal profit;//利润(完成后变成实际利润  ticheng-reward-commission-driverReward)

	private List<LogisGoodsPic> goodsPicList;

	private List<LogisDeliveryLog> deliveryLogs;

	private String[] statusIds;//用于查询(订单状态)

    private String[] carrierStatusIds;// 用于查询(运输状态)

	private String licensePlate; //接单车牌
	private boolean dirverCurrent;//司机当前
	private int insuranceStatus;//货主选择了 保险额度，但是没有支付定金，那个保险 0  就是没有进行购买，当货主付了定金，就是 1 ，正在处理中， 2 的话 就是保险公司已生成这个保险合同，


	private String estimateWeight;  //预估重量(吨)
	private String estimateVolume;//预估体积

	private BigDecimal estimateOwnerFreight;//货主端的预估总运费

	private String devOpenid;//发货者
	private String recOpenid;//收获者
	private String carOpenid;//运输者
	private String appId;
	private String formId;//formId;

	private String needModels;//所需车型
	private String speedType;//次日达，隔日达 四日达 五日达

	private String loadAddress;//装车地址
	private String unloadAddress;//卸车地址


	public String getEstimateWeight() {
		return estimateWeight;
	}

	public void setEstimateWeight(String estimateWeight) {
		this.estimateWeight = estimateWeight;
	}

	public String getEstimateVolume() {
		return estimateVolume;
	}

	public void setEstimateVolume(String estimateVolume) {
		this.estimateVolume = estimateVolume;
	}

	public BigDecimal getEstimateOwnerFreight() {
		if(this.getOwnerUnitPrice()!=null&& StrUtil.isNotBlank(this.getEstimateWeight())){
			estimateOwnerFreight = this.getOwnerUnitPrice().multiply(new BigDecimal(this.getEstimateWeight()));
		}
		return estimateOwnerFreight;
	}

	public BigDecimal getEstimateDriverFreight() {
		if(this.getDriverUnitPrice()!=null&& StrUtil.isNotBlank(this.getEstimateWeight())){
			return  this.getDriverUnitPrice().multiply(new BigDecimal(this.getEstimateWeight()));
		}
		return null;
	}

	public void setEstimateOwnerFreight(BigDecimal estimateOwnerFreight) {
		this.estimateOwnerFreight = estimateOwnerFreight;
	}

	public LogisDelivery() {
		super();
	}

	public LogisDelivery(String id){
		super(id);
	}

	@Length(min=0, max=32, message="openid长度必须介于 0 和 32 之间")
	@ExcelField(title="openid", align=2, sort=1)
	public String getOpenid() {
		return openid;
	}

	public void setOpenid(String openid) {
		this.openid = openid;
	}
	
	@Length(min=0, max=32, message="发货城市长度必须介于 0 和 32 之间")
	@ExcelField(title="发货城市", align=2, sort=2)
	public String getStartProvince() {
		return startProvince;
	}

	public void setStartProvince(String startProvince) {
		this.startProvince = startProvince;
	}
	
	@Length(min=0, max=32, message="发货城市长度必须介于 0 和 32 之间")
	@ExcelField(title="发货城市", align=2, sort=3)
	public String getStartCity() {
		return startCity;
	}

	public void setStartCity(String startCity) {
		this.startCity = startCity;
	}
	
	@Length(min=0, max=256, message="发货详细地址长度必须介于 0 和 256 之间")
	@ExcelField(title="发货详细地址", align=2, sort=4)
	public String getStartAddress() {
		return startAddress;
	}

	public void setStartAddress(String startAddress) {
		this.startAddress = startAddress;
	}
	
	@Length(min=0, max=32, message="目的城市长度必须介于 0 和 32 之间")
	@ExcelField(title="目的城市", align=2, sort=5)
	public String getEndProvince() {
		return endProvince;
	}

	public void setEndProvince(String endProvince) {
		this.endProvince = endProvince;
	}
	
	@Length(min=0, max=32, message="目的城市长度必须介于 0 和 32 之间")
	@ExcelField(title="目的城市", align=2, sort=6)
	public String getEndCity() {
		return endCity;
	}

	public void setEndCity(String endCity) {
		this.endCity = endCity;
	}
	
	@Length(min=0, max=256, message="目的地长度必须介于 0 和 256 之间")
	@ExcelField(title="目的地", align=2, sort=7)
	public String getEndAddress() {
		return endAddress;
	}

	public void setEndAddress(String endAddress) {
		this.endAddress = endAddress;
	}
	
	@Length(min=0, max=32, message="距离(公里数)长度必须介于 0 和 32 之间")
	@ExcelField(title="距离(公里数)", align=2, sort=8)
	public String getDistance() {
		return distance;
	}

	public void setDistance(String distance) {
		this.distance = distance;
	}
	
	@Length(min=0, max=64, message="货物名称长度必须介于 0 和 64 之间")
	@ExcelField(title="货物名称", align=2, sort=9)
	public String getGoodsName() {
		return goodsName;
	}

	public void setGoodsName(String goodsName) {
		this.goodsName = goodsName;
	}
	
	@Length(min=0, max=12, message="货物重量长度必须介于 0 和 12 之间")
	@ExcelField(title="货物重量", align=2, sort=10)
	public String getGoodsWeight() {
		return goodsWeight;
	}

	public void setGoodsWeight(String goodsWeight) {
		this.goodsWeight = goodsWeight;
	}
	
	@Length(min=0, max=32, message="货物体积长度必须介于 0 和 32 之间")
	@ExcelField(title="货物体积", align=2, sort=11)
	public String getGoodsVolume() {
		return goodsVolume;
	}

	public void setGoodsVolume(String goodsVolume) {
		this.goodsVolume = goodsVolume;
	}

	public String getWholeCar() {
		return wholeCar;
	}

	public void setWholeCar(String wholeCar) {
		this.wholeCar = wholeCar;
	}

	public String getAuditStatus() {
		return auditStatus;
	}

	public void setAuditStatus(String auditStatus) {
		this.auditStatus = auditStatus;
	}

	public BigDecimal getFreight() {
		return freight;
	}

	public void setFreight(BigDecimal freight) {
		this.freight = freight;
	}

	public List<LogisGoodsPic> getGoodsPicList() {
		return goodsPicList;
	}

	public void setGoodsPicList(List<LogisGoodsPic> goodsPicList) {
		this.goodsPicList = goodsPicList;
	}

	@Length(min=0, max=32, message="装车时间长度必须介于 0 和 32 之间")
	@ExcelField(title="装车时间", align=2, sort=14)
	public String getLoadTime() {
		return loadTime;
	}

	public void setLoadTime(String loadTime) {
		this.loadTime = loadTime;
	}
	
	@Length(min=0, max=32, message="运送人长度必须介于 0 和 32 之间")
	@ExcelField(title="运送人", align=2, sort=15)
	public String getCarrier() {
		return carrier;
	}

	public void setCarrier(String carrier) {
		this.carrier = carrier;
	}

	@ExcelField(title="1叫车成功2司机接单3到达工厂4运输中5到达目的地6已卸车", align=2, sort=16)
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public List<LogisDeliveryLog> getDeliveryLogs() {
		return deliveryLogs;
	}

	public void setDeliveryLogs(List<LogisDeliveryLog> deliveryLogs) {
		this.deliveryLogs = deliveryLogs;
	}

	public String getWxOrderId() {
		return wxOrderId;
	}

	public void setWxOrderId(String wxOrderId) {
		this.wxOrderId = wxOrderId;
	}

	public String getPayStatus() {
		return payStatus;
	}

	public void setPayStatus(String payStatus) {
		this.payStatus = payStatus;
	}

	public String getConsignerName() {
		return consignerName;
	}

	public void setConsignerName(String consignerName) {
		this.consignerName = consignerName;
	}

	public String getConsignerMobile() {
		return consignerMobile;
	}

	public void setConsignerMobile(String consignerMobile) {
		this.consignerMobile = consignerMobile;
	}

	public String getCarrierName() {
		return carrierName;
	}

	public void setCarrierName(String carrierName) {
		this.carrierName = carrierName;
	}

	public String getCarrierMobile() {
		return carrierMobile;
	}

	public void setCarrierMobile(String carrierMobile) {
		this.carrierMobile = carrierMobile;
	}

	public String getReceiver() {
		return receiver;
	}

	public void setReceiver(String receiver) {
		this.receiver = receiver;
	}

	public String getReceiverName() {
		return receiverName;
	}

	public void setReceiverName(String receiverName) {
		this.receiverName = receiverName;
	}

	public String getReceiverMobile() {
		return receiverMobile;
	}

	public void setReceiverMobile(String receiverMobile) {
		this.receiverMobile = receiverMobile;
	}

	public String getDeliveryDate(){
		return DateUtil.format(this.getCreateDate(), "MM月dd日 HH:mm");
	}

	public String getStartDistrict() {
		return startDistrict;
	}

	public void setStartDistrict(String startDistrict) {
		this.startDistrict = startDistrict;
	}

	public String getEndDistrict() {
		return endDistrict;
	}

	public void setEndDistrict(String endDistrict) {
		this.endDistrict = endDistrict;
	}
	//发布时间
	public String getRelativeDate(){
		if(this.getAuditTime()!=null){
			return RelativeDateFormat.format(this.getAuditTime());
		}
		return RelativeDateFormat.format(this.getCreateDate());
	}

	public String getStatusText() {
		int statusInt= Integer.parseInt(this.getStatus());
		if(statusInt>=3&&statusInt<=8){
			return this.getLicensePlate()+","+DictUtils.getDictLabel(this.getStatus(),"logis_delivery_status","");
		}
		return DictUtils.getDictLabel(this.getStatus(),"logis_delivery_status","");

	}
	public String getCarrierStatusText(){
		return DictUtils.getDictLabel(this.getCarrierStatus(),"logis_delivery_status","");
	}

	public String getInsurStatusText(){
		return DictUtils.getDictLabel(this.getInsurStatus(),"logis_delivery_status","");
	}

	public String getRecStatusText(){
		return DictUtils.getDictLabel(this.getReceiverStatus(),"logis_delivery_status","");
	}

	public void setStatusText(String statusText) {
		this.statusText = statusText;
	}


	public String getStartLng() {
		return startLng;
	}

	public void setStartLng(String startLng) {
		this.startLng = startLng;
	}

	public String getStartLat() {
		return startLat;
	}

	public void setStartLat(String startLat) {
		this.startLat = startLat;
	}

	public String getEndLng() {
		return endLng;
	}

	public void setEndLng(String endLng) {
		this.endLng = endLng;
	}

	public String getEndLat() {
		return endLat;
	}

	public void setEndLat(String endLat) {
		this.endLat = endLat;
	}

	public String getYsxy() {
		return ysxy;
	}

	public void setYsxy(String ysxy) {
		this.ysxy = ysxy;
	}

	public int getHwbx() {
		return hwbx;
	}

	public void setHwbx(int hwbx) {
		this.hwbx = hwbx;
	}

	public String getLeaveMsg() {
		return leaveMsg;
	}

	public void setLeaveMsg(String leaveMsg) {
		this.leaveMsg = leaveMsg;
	}

	public Date getStartDate() {
		return startDate;
	}

	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	public Date getEndDate() {
		return endDate;
	}

	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	public BigDecimal getReward() {
		return reward;
	}

	public void setReward(BigDecimal reward) {
		this.reward = reward;
	}

	public String getCarInfo() {
		return carInfo;
	}

	public void setCarInfo(String carInfo) {
		this.carInfo = carInfo;
	}

	//订金
	public BigDecimal getTotalDeposit() {
		if(this.getInsuranceFee()!=null&&this.getDeposit()!=null){
			return this.getDeposit().add(this.getInsuranceFee());//订金要加上保费
		}
		return getDeposit();
	}
	public BigDecimal getDeposit() {
		return deposit;
	}

	public void setDeposit(BigDecimal deposit) {
		this.deposit = deposit;
	}

	public BigDecimal getRetainage() {
		if(this.getFreight()!=null&&this.getDeposit()!=null){
			return this.getFreight().subtract(this.getTotalDeposit());
		}
		/*if(this.getEstimateOwnerFreight()!=null&&this.getDeposit()!=null){
			return  this.getEstimateOwnerFreight().subtract(this.getDeposit());
		}*/
		return new BigDecimal("0");
	}

	public void setRetainage(BigDecimal retainage) {
		this.retainage = retainage;
	}

	public String[] getStatusIds() {
		return statusIds;
	}

	public void setStatusIds(String[] statusIds) {
		this.statusIds = statusIds;
	}

	public BigDecimal getDriverFreight() {
		return driverFreight;
	}

	public void setDriverFreight(BigDecimal driverFreight) {
		this.driverFreight = driverFreight;
	}

	public String getLicensePlate() {
		return licensePlate;
	}

	public void setLicensePlate(String licensePlate) {
		this.licensePlate = licensePlate;
	}

	public BigDecimal getInsuranceFee() {
		return insuranceFee;
	}

	public void setInsuranceFee(BigDecimal insuranceFee) {
		this.insuranceFee = insuranceFee;
	}

	public int getTaxPoiint() {
		return taxPoiint;
	}

	public void setTaxPoiint(int taxPoiint) {
		this.taxPoiint = taxPoiint;
	}

	public BigDecimal getTicheng() {
		return ticheng;
	}

	public void setTicheng(BigDecimal ticheng) {
		this.ticheng = ticheng;
	}

	public Date getAuditTime() {
		return auditTime;
	}

	public void setAuditTime(Date auditTime) {
		this.auditTime = auditTime;
	}

	public BigDecimal getCommission() {
		return commission;
	}

	public void setCommission(BigDecimal commission) {
		this.commission = commission;
	}

	public BigDecimal getDriverReward() {
		return driverReward;
	}

	public void setDriverReward(BigDecimal driverReward) {
		this.driverReward = driverReward;
	}

	public BigDecimal getProfit() {
		return profit;
	}

	public void setProfit(BigDecimal profit) {
		this.profit = profit;
	}

	public BigDecimal getDriverUnitPrice() {
		return driverUnitPrice;
	}

	public void setDriverUnitPrice(BigDecimal driverUnitPrice) {
		this.driverUnitPrice = driverUnitPrice;
	}

	public boolean isDirverCurrent() {
		return dirverCurrent;
	}

	public void setDirverCurrent(boolean dirverCurrent) {
		this.dirverCurrent = dirverCurrent;
	}

    public BigDecimal getOwnerUnitPrice() {
        return ownerUnitPrice;
    }

    public void setOwnerUnitPrice(BigDecimal ownerUnitPrice) {
        this.ownerUnitPrice = ownerUnitPrice;
    }

    public BigDecimal getTax() {
        return tax;
    }

    public void setTax(BigDecimal tax) {
        this.tax = tax;
    }

	public BigDecimal getOwnerFreight() {
		return ownerFreight;
	}

	public void setOwnerFreight(BigDecimal ownerFreight) {
		this.ownerFreight = ownerFreight;
	}

	public String getHwbxText() {
		return hwbxText;
	}

	public void setHwbxText(String hwbxText) {
		this.hwbxText = hwbxText;
	}

	public Date getReceiptTime() {
		return receiptTime;
	}

	public void setReceiptTime(Date receiptTime) {
		this.receiptTime = receiptTime;
	}

	//物流耗时
	public String getConsumeTime() {
		if(this.getPayDate1()!=null){
			DateBetween between = DateBetween.create(this.getPayDate1(),new Date());
			if(this.getCarrierFinishTime()!=null){
				between = DateBetween.create(this.getPayDate1(),getCarrierFinishTime());
			}
			long day = between.between(DateUnit.DAY);
			long hour = between.between(DateUnit.HOUR);
			long minute = between.between(DateUnit.MINUTE);
			if(day>0){
				hour = hour%day;
			}
			consumeTime = "耗时"+day+"天"+hour+"小时";
			if(day==0&&hour==0){
				consumeTime= "耗时"+minute+"分钟";
			}
		}

		return consumeTime;
	}
	//支付剩余时间
	public String getLeftPayTime() {
		Date overPayTime = DateUtil.offsetMinute(this.getCreateDate(),30);
		DateBetween between = DateBetween.create(new Date(),overPayTime);
		long day = between.between(DateUnit.DAY);
		long hour = between.between(DateUnit.HOUR);
		long minute = between.between(DateUnit.MINUTE);
		long second = between.between(DateUnit.SECOND);
		second = second%60;
		if(minute<0||minute>30){
			return "0";
		}
		return minute+":"+second;
	}

	//司机接单剩余时间
	public String getLeftDriverTime() {
		if(this.getPayDate1()==null){
			return "0";
		}
		Date overPayTime = DateUtil.offsetMinute(this.getPayDate1(),180);
		DateBetween between = DateBetween.create(new Date(),overPayTime);
		long day = between.between(DateUnit.DAY);
		long hour = between.between(DateUnit.HOUR);
		long minute = between.between(DateUnit.MINUTE);
		long second = between.between(DateUnit.SECOND);
		second = second%60;
		if(minute<0||minute>180){
			return "0";
		}
		return minute+":"+second;
	}



	public void setConsumeTime(String consumeTime) {
		this.consumeTime = consumeTime;
	}

	public BigDecimal getInsuranceFee0() {
		if(insuranceFee0==null){
			return this.getInsuranceFee();
		}
		return insuranceFee0;
	}

	public void setInsuranceFee0(BigDecimal insuranceFee0) {
		this.insuranceFee0 = insuranceFee0;
	}

	public String getDriverRealName() {
		return driverRealName;
	}

	public void setDriverRealName(String driverRealName) {
		this.driverRealName = driverRealName;
	}

	public int getInsuranceStatus() {
		return insuranceStatus;
	}

	public void setInsuranceStatus(int insuranceStatus) {
		this.insuranceStatus = insuranceStatus;
	}

	public String getLoadTimeText() {
		return loadTimeText;
	}

	public void setLoadTimeText(String loadTimeText) {
		this.loadTimeText = loadTimeText;
	}

	public String getWxOrderId2() {
		return wxOrderId2;
	}

	public void setWxOrderId2(String wxOrderId2) {
		this.wxOrderId2 = wxOrderId2;
	}

	public Date getPayDate1() {
		return payDate1;
	}

	public void setPayDate1(Date payDate1) {
		this.payDate1 = payDate1;
	}

	public Date getPayDate2() {
		return payDate2;
	}

	public void setPayDate2(Date payDate2) {
		this.payDate2 = payDate2;
	}

	public BigDecimal getEstimateProfit() {
		return estimateProfit;
	}

	public void setEstimateProfit(BigDecimal estimateProfit) {
		this.estimateProfit = estimateProfit;
	}

	public String getHwbxYhText() {
		return hwbxYhText;
	}

	public void setHwbxYhText(String hwbxYhText) {
		this.hwbxYhText = hwbxYhText;
	}

	public String getPayOpenId1() {
		return payOpenId1;
	}

	public void setPayOpenId1(String payOpenId1) {
		this.payOpenId1 = payOpenId1;
	}

	public String getPayOpenId2() {
		return payOpenId2;
	}

	public void setPayOpenId2(String payOpenId2) {
		this.payOpenId2 = payOpenId2;
	}

	public String getReceiverStatus() {
		return receiverStatus;
	}

	public void setReceiverStatus(String receiverStatus) {
		this.receiverStatus = receiverStatus;
	}

	public String getCarrierStatus() {
		return carrierStatus;
	}

	public void setCarrierStatus(String carrierStatus) {
		this.carrierStatus = carrierStatus;
	}

	public String getInsurStatus() {
		return insurStatus;
	}

	public void setInsurStatus(String insurStatus) {
		this.insurStatus = insurStatus;
	}

    public String[] getCarrierStatusIds() {
        return carrierStatusIds;
    }

    public void setCarrierStatusIds(String[] carrierStatusIds) {
        this.carrierStatusIds = carrierStatusIds;
    }

	public String getDevOpenid() {
		return devOpenid;
	}

	public void setDevOpenid(String devOpenid) {
		this.devOpenid = devOpenid;
	}

	public String getRecOpenid() {
		return recOpenid;
	}

	public void setRecOpenid(String recOpenid) {
		this.recOpenid = recOpenid;
	}

	public String getCarOpenid() {
		return carOpenid;
	}

	public void setCarOpenid(String carOpenid) {
		this.carOpenid = carOpenid;
	}

	public String getAppId() {
		return appId;
	}

	public void setAppId(String appId) {
		this.appId = appId;
	}

	public String getFormId() {
		return formId;
	}

	public void setFormId(String formId) {
		this.formId = formId;
	}

	public Date getCarrierFinishTime() {
		return carrierFinishTime;
	}

	public void setCarrierFinishTime(Date carrierFinishTime) {
		this.carrierFinishTime = carrierFinishTime;
	}

	public String getNeedModels() {
		return needModels;
	}

	public void setNeedModels(String needModels) {
		this.needModels = needModels;
	}

	public String getSpeedType() {
		return speedType;
	}

	public void setSpeedType(String speedType) {
		this.speedType = speedType;
	}


	public String getLoadAddress() {
		return loadAddress;
	}

	public void setLoadAddress(String loadAddress) {
		this.loadAddress = loadAddress;
	}

	public String getUnloadAddress() {
		return unloadAddress;
	}

	public void setUnloadAddress(String unloadAddress) {
		this.unloadAddress = unloadAddress;
	}
}